#ifndef __FLOAT_H__
#define __FLOAT_H__

#include "trap.h"
//定义FLOAT类型为int,表示浮点数的定点实现
typedef int FLOAT;

//将FLOAT类型转换为整数
static inline int F2int(FLOAT a) {
	return (a & 0xffff0000) >> 16;		//右移16位，恢复整数部分
}
//将整数转换为FLOAT类型
static inline FLOAT int2F(int a) {
	return a << 16;		//左移16位
}

//将FLOAT类型与整数相乘
static inline FLOAT F_mul_int(FLOAT a, int b) {
	return a*b;
}

static inline FLOAT F_div_int(FLOAT a, int b) {
	return a/b;		//整数除法
}

FLOAT f2F(float);		//将float转换为FLOAT
FLOAT F_mul_F(FLOAT, FLOAT);	//乘积
FLOAT F_div_F(FLOAT, FLOAT);	//商
FLOAT Fabs(FLOAT);		//绝对值
FLOAT sqrt(FLOAT);		//平方根
FLOAT pow(FLOAT, FLOAT);		//幂

// used when calling printf/sprintf to format a FLOAT argument
#define FLOAT_ARG(f) (long long)f

//初始化FLOAT类型的vfprintf函数
void init_FLOAT_vfprintf(void);

#endif
